Obtaining Dynamic Program Information with Binary Instrumentation
نویسنده
چکیده
Dynamic information about a program has many uses, such as aiding the programmer in debugging or optimizing his code, helping make code more secure, or helping hardware and systems designers make organizational or tradeoff decisions. Program information is available through a variety of approaches, including visual inspection of the code or its output, compiler output, hardware counters, debuggers, and program instrumentation through a number of techniques. This work contains a survey of several approaches for obtaining program information and uses the findings to argue that Binary Instrumentation allows efficient access to information that is not available from any other technique. This paper examines a series of binary instrumentation toolkits that are able to instrument a static executable or a running executable, through code patching and Just-In-Time (JIT) compilation. Here is also discussed the various advantages of these tools over one another in terms of efficiency, transparency, and portability.
منابع مشابه
Redundancy Suppression In Time-Aware Dynamic Binary Instrumentation
Software tracing techniques are well-established and used by instrumentation tools to extract run-time information for program analysis and debugging. Dynamic binary instrumentation as one tool instruments program binaries to extract information. Unfortunately, instrumentation causes perturbation that is unacceptable for time-sensitive applications. Consequently we developed DIME*, a tool for d...
متن کاملHP Caliper : A Framework for Performance Analysis
You perform statistical sampling by taking periodic snapshots of a program’s state. Statistical sampling is nonintrusive—unlike binary instrumentation, statistical sampling doesn’t add any lines of code to the application being tested—but the computing community generally regards this technique as imprecise. It imposes low overhead on a program’s runtime performance and can be used for time-cri...
متن کاملFIST: A Framework for Instrumentation in Software Dynamic Translators
Software dynamic translators (SDT) typically monitor, profile, and affect the execution of a program. Such systems have been used to build many useful applications, including dynamic code optimizers for binary machine code and Java bytecode, software security checkers, binary translators, code profilers and program introspection tools. While all of these systems use program instrumentation, the...
متن کاملDynamic Instrumentation of C++ Applications on IA-64
Dynamic instrumentation is the process of modifying a program’s binary instructions on the fly while the program executes. This technique is used in a wide variety of tools for performance analysis, profiling, coverage analysis, correctness checking, and testing. Instrumenting applications generated from C++ sources reveals new complications, mainly caused by the C++ exception handling mechanis...
متن کاملGenerating Dynamic Program Analysis Tools
Sophisticated instrumentation-based systems exist for building dynamic analysis tools but to use these systems a developer must write the instrumentation and analysis code by hand. This paper describes how analysis tools can be generated automatically by specifying analysis algorithms using attribute grammars based on the static and dynamic structure of the program being analysed. Using methods...
متن کامل